package fr.iut.tp3.view.components;

import java.awt.BorderLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import fr.iut.tp3.Context;
import fr.iut.tp3.controller.commands.CDisparaitreAjouter;
import fr.iut.tp3.controller.commands.CPanelAjouter;
import fr.iut.tp3.controller.commands.Commande;
import fr.iut.tp3.model.UtilisateurImpl;
import fr.iut.tp3.view.listeners.AjouterBtnListener;

public class PanelAjouter extends JPanel {

	/**
	 * 
	 */
	private static final long serialVersionUID = -8208943306356531140L;
	private JLabel titreLabel = new JLabel("Ajouter utilisateur ");
	private JLabel nomLabel = new JLabel("Nom : ");
	private JLabel loginLabel = new JLabel("Login : ");
	private JLabel passwordLabel = new JLabel("Password : ");
	private JLabel niveauPrivilegeLabel = new JLabel("Niveau Privilege : ");
	private JLabel superieurHierachiqueLabel = new JLabel(
			"Superieur Hierachique : ");
	private JTextField nomTextField = new JTextField();
	private JTextField loginTextField = new JTextField();
	private JPasswordField passwordTextField = new JPasswordField();
	private JComboBox<String> niveauPrivilegeComboBox;
	private JComboBox<String> superieurHierachiqueComboBox;
	private JButton okButton = new JButton("Ok");
	private JButton disparaitreButton = new JButton("Disparaitre");
	private JPanel formulairePanel = new JPanel();
	private Context context;
		
	public PanelAjouter(Context context) {
		this.context = context;
		niveauPrivilegeComboBox = new JComboBox<String>(new UtilisateurImpl().privilegestoTab());
		
		superieurHierachiqueComboBox = new JComboBox<String>( context.getListeUtilisateurs().obtenirSuperieurs());
		setLayout(new BorderLayout());
		add(titreLabel, BorderLayout.NORTH);
		formulairePanel.setLayout(new GridLayout(6, 2,5,20));
		formulairePanel.add(nomLabel);
		formulairePanel.add(nomTextField);
		formulairePanel.add(loginLabel);
		formulairePanel.add(loginTextField);
		formulairePanel.add(passwordLabel);
		formulairePanel.add(passwordTextField);
		formulairePanel.add(niveauPrivilegeLabel);
		formulairePanel.add(niveauPrivilegeComboBox);
		formulairePanel.add(superieurHierachiqueLabel);
		formulairePanel.add(superieurHierachiqueComboBox);
		formulairePanel.add(okButton);
		formulairePanel.add(disparaitreButton);
		add(formulairePanel, BorderLayout.CENTER);
		okButton.setActionCommand("ok");
		disparaitreButton.setActionCommand("disparaitre");
		addListeners();
	}

	/**
	 * Ajout des listeners.
	 */
	private void addListeners() {
		// Les commandes.
		Commande ajouter = new CPanelAjouter(context, this);
		Commande disparaitre = new CDisparaitreAjouter(context);

		// Définir les actions.
		AjouterBtnListener listener = new AjouterBtnListener(ajouter, disparaitre,context);
		okButton.setActionCommand("ok");
		disparaitreButton.setActionCommand("annuler");

		// Ajout des listeners.
		okButton.addActionListener(listener);
		disparaitreButton.addActionListener(listener);
	}

	public JLabel getTitreLabel() {
		return titreLabel;
	}

	public JLabel getNomLabel() {
		return nomLabel;
	}

	public JLabel getLoginLabel() {
		return loginLabel;
	}

	public JLabel getPasswordLabel() {
		return passwordLabel;
	}

	public JLabel getNiveauPrivilegeLabel() {
		return niveauPrivilegeLabel;
	}

	public JLabel getSuperieurHierachiqueLabel() {
		return superieurHierachiqueLabel;
	}

	public JTextField getNomTextField() {
		return nomTextField;
	}

	public JTextField getLoginTextField() {
		return loginTextField;
	}

	public JPasswordField getPasswordTextField() {
		return passwordTextField;
	}

	public JComboBox<String> getNiveauPrivilegeComboBox() {
		return niveauPrivilegeComboBox;
	}

	public JComboBox<String> getSuperieurHierachiqueComboBox() {
		return superieurHierachiqueComboBox;
	}

	public JButton getOkButton() {
		return okButton;
	}

	public JButton getAnnulerButton() {
		return disparaitreButton;
	}

	public JPanel getFormulairePanel() {
		return formulairePanel;
	}

}
